<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Clause: tsl::htrie_set&lt; CharT, Hash, KeySizeT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Clause
   &#160;<span id="projectnumber">1.0</span>
   </div>
   <div id="projectbrief">Chatopera Language Understanding Service.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>首页</span></a></li>
      <li><a href="pages.html"><span>相关页面</span></a></li>
      <li><a href="modules.html"><span>模块</span></a></li>
      <li><a href="namespaces.html"><span>命名空间</span></a></li>
      <li class="current"><a href="annotated.html"><span>类</span></a></li>
      <li><a href="files.html"><span>文件</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="搜索" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>类列表</span></a></li>
      <li><a href="classes.html"><span>类索引</span></a></li>
      <li><a href="inherits.html"><span>类继承关系</span></a></li>
      <li><a href="functions.html"><span>类成员</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacetsl.html">tsl</a></li><li class="navelem"><a class="el" href="classtsl_1_1htrie__set.html">htrie_set</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pub-static-methods">静态 Public 成员函数</a> &#124;
<a href="#friends">友元</a> &#124;
<a href="classtsl_1_1htrie__set-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">tsl::htrie_set&lt; CharT, Hash, KeySizeT &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="htrie__set_8h_source.html">htrie_set.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a0f86cddeeb61cff5044fe7862526d907"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f86cddeeb61cff5044fe7862526d907"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>char_type</b> = typename ht::char_type</td></tr>
<tr class="separator:a0f86cddeeb61cff5044fe7862526d907"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60aed8c4469c3b45454cddf607bb5053"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60aed8c4469c3b45454cddf607bb5053"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>key_size_type</b> = typename ht::key_size_type</td></tr>
<tr class="separator:a60aed8c4469c3b45454cddf607bb5053"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49adc56dcc3c3def4169e630f13c9723"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49adc56dcc3c3def4169e630f13c9723"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>size_type</b> = typename ht::size_type</td></tr>
<tr class="separator:a49adc56dcc3c3def4169e630f13c9723"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71336a03a9413b125da5fd3a736310cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71336a03a9413b125da5fd3a736310cb"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>hasher</b> = typename ht::hasher</td></tr>
<tr class="separator:a71336a03a9413b125da5fd3a736310cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6504ad3538b537625a19521dddc6719"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6504ad3538b537625a19521dddc6719"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>iterator</b> = typename ht::iterator</td></tr>
<tr class="separator:ae6504ad3538b537625a19521dddc6719"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a628fdd2521b893763a55d594347af95a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a628fdd2521b893763a55d594347af95a"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>const_iterator</b> = typename ht::const_iterator</td></tr>
<tr class="separator:a628fdd2521b893763a55d594347af95a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a922db0fe0f783550b44c7bfefd5f36bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a922db0fe0f783550b44c7bfefd5f36bb"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>prefix_iterator</b> = typename ht::prefix_iterator</td></tr>
<tr class="separator:a922db0fe0f783550b44c7bfefd5f36bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2d2863e761bfe6310c37dfc840b7aa1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2d2863e761bfe6310c37dfc840b7aa1"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>const_prefix_iterator</b> = typename ht::const_prefix_iterator</td></tr>
<tr class="separator:aa2d2863e761bfe6310c37dfc840b7aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:aa3a00d32e268ed02416eb0cd46b1084e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3a00d32e268ed02416eb0cd46b1084e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>htrie_set</b> (const Hash &amp;hash=Hash())</td></tr>
<tr class="separator:aa3a00d32e268ed02416eb0cd46b1084e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08653599b52519034264cfb4342fb9a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08653599b52519034264cfb4342fb9a0"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>htrie_set</b> (size_type burst_threshold, const Hash &amp;hash=Hash())</td></tr>
<tr class="separator:a08653599b52519034264cfb4342fb9a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c4009605f7ce5612c0bfb4d89239562"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8c4009605f7ce5612c0bfb4d89239562"></a>
template&lt;class InputIt , typename std::enable_if&lt; is_iterator&lt; InputIt &gt;::value &gt;::type *  = nullptr&gt; </td></tr>
<tr class="memitem:a8c4009605f7ce5612c0bfb4d89239562"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><b>htrie_set</b> (InputIt first, InputIt last, const Hash &amp;hash=Hash())</td></tr>
<tr class="separator:a8c4009605f7ce5612c0bfb4d89239562"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30edac8e93004c6ad8021d2b417c355e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30edac8e93004c6ad8021d2b417c355e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>htrie_set</b> (std::initializer_list&lt; const CharT * &gt; init, const Hash &amp;hash=Hash())</td></tr>
<tr class="separator:a30edac8e93004c6ad8021d2b417c355e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a707edd41cb95a3a316977be889dc7527"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a707edd41cb95a3a316977be889dc7527"></a>
<a class="el" href="classtsl_1_1htrie__set.html">htrie_set</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (std::initializer_list&lt; const CharT * &gt; ilist)</td></tr>
<tr class="separator:a707edd41cb95a3a316977be889dc7527"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abde76a08a3b029e68b7bb23f98c02a4d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abde76a08a3b029e68b7bb23f98c02a4d"></a>
iterator&#160;</td><td class="memItemRight" valign="bottom"><b>begin</b> () noexcept</td></tr>
<tr class="separator:abde76a08a3b029e68b7bb23f98c02a4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af601ee09b6c5272a9d35a6721ad8cca4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af601ee09b6c5272a9d35a6721ad8cca4"></a>
const_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>begin</b> () const noexcept</td></tr>
<tr class="separator:af601ee09b6c5272a9d35a6721ad8cca4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8b9031046e1a1bc856a2df7244a4a2b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8b9031046e1a1bc856a2df7244a4a2b"></a>
const_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>cbegin</b> () const noexcept</td></tr>
<tr class="separator:ac8b9031046e1a1bc856a2df7244a4a2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24c69c20bf554f6cab4c7a6ad7e0d038"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24c69c20bf554f6cab4c7a6ad7e0d038"></a>
iterator&#160;</td><td class="memItemRight" valign="bottom"><b>end</b> () noexcept</td></tr>
<tr class="separator:a24c69c20bf554f6cab4c7a6ad7e0d038"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cfb4df431e23f57b579a7ee607ebe33"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cfb4df431e23f57b579a7ee607ebe33"></a>
const_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>end</b> () const noexcept</td></tr>
<tr class="separator:a0cfb4df431e23f57b579a7ee607ebe33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c4b3b3855528242a759deca4fea55e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c4b3b3855528242a759deca4fea55e7"></a>
const_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>cend</b> () const noexcept</td></tr>
<tr class="separator:a5c4b3b3855528242a759deca4fea55e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7be498dfb8b26b1d6d39896e10238ec5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7be498dfb8b26b1d6d39896e10238ec5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>empty</b> () const noexcept</td></tr>
<tr class="separator:a7be498dfb8b26b1d6d39896e10238ec5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49879c51ef76e59bcd096bb6e398bb7b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49879c51ef76e59bcd096bb6e398bb7b"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><b>size</b> () const noexcept</td></tr>
<tr class="separator:a49879c51ef76e59bcd096bb6e398bb7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a966bb083c7d8f51109481cf7051602f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a966bb083c7d8f51109481cf7051602f7"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><b>max_size</b> () const noexcept</td></tr>
<tr class="separator:a966bb083c7d8f51109481cf7051602f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d4943e3a2ad4a7c0e70d1788128cf81"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d4943e3a2ad4a7c0e70d1788128cf81"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><b>max_key_size</b> () const noexcept</td></tr>
<tr class="separator:a5d4943e3a2ad4a7c0e70d1788128cf81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63841836ead586f56bf5a867be2f32b1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a63841836ead586f56bf5a867be2f32b1">shrink_to_fit</a> ()</td></tr>
<tr class="separator:a63841836ead586f56bf5a867be2f32b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9984a642fcf9137ca06552c4055f578f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9984a642fcf9137ca06552c4055f578f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>clear</b> () noexcept</td></tr>
<tr class="separator:a9984a642fcf9137ca06552c4055f578f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d1f27b96c8a9e85ec7f4e59fe262daa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d1f27b96c8a9e85ec7f4e59fe262daa"></a>
std::pair&lt; iterator, bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>insert_ks</b> (const CharT *key, size_type key_size)</td></tr>
<tr class="separator:a0d1f27b96c8a9e85ec7f4e59fe262daa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b2c068fc51806e436a8f652b161fbea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b2c068fc51806e436a8f652b161fbea"></a>
std::pair&lt; iterator, bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>insert</b> (const CharT *key)</td></tr>
<tr class="separator:a7b2c068fc51806e436a8f652b161fbea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38687137571e7d0ace7c3aa3c3f55bd1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38687137571e7d0ace7c3aa3c3f55bd1"></a>
std::pair&lt; iterator, bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>insert</b> (const std::basic_string&lt; CharT &gt; &amp;key)</td></tr>
<tr class="separator:a38687137571e7d0ace7c3aa3c3f55bd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add43e0dc387be05e6baf84ee9a148ddb"><td class="memTemplParams" colspan="2"><a class="anchor" id="add43e0dc387be05e6baf84ee9a148ddb"></a>
template&lt;class InputIt , typename std::enable_if&lt; is_iterator&lt; InputIt &gt;::value &gt;::type *  = nullptr&gt; </td></tr>
<tr class="memitem:add43e0dc387be05e6baf84ee9a148ddb"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>insert</b> (InputIt first, InputIt last)</td></tr>
<tr class="separator:add43e0dc387be05e6baf84ee9a148ddb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdfb12c7436e06db0d11a46e543efef7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afdfb12c7436e06db0d11a46e543efef7"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>insert</b> (std::initializer_list&lt; const CharT * &gt; ilist)</td></tr>
<tr class="separator:afdfb12c7436e06db0d11a46e543efef7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f6756933cb3d00231cc2bb15a1f95b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f6756933cb3d00231cc2bb15a1f95b4"></a>
std::pair&lt; iterator, bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>emplace_ks</b> (const CharT *key, size_type key_size)</td></tr>
<tr class="separator:a0f6756933cb3d00231cc2bb15a1f95b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae418fe1807131bad4950ad4ac2dd9005"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae418fe1807131bad4950ad4ac2dd9005"></a>
std::pair&lt; iterator, bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>emplace</b> (const CharT *key)</td></tr>
<tr class="separator:ae418fe1807131bad4950ad4ac2dd9005"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:addd7d51d8d4903958132bea0d083a934"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="addd7d51d8d4903958132bea0d083a934"></a>
std::pair&lt; iterator, bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>emplace</b> (const std::basic_string&lt; CharT &gt; &amp;key)</td></tr>
<tr class="separator:addd7d51d8d4903958132bea0d083a934"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1460a9dee4c5e1acc2511b5a705131b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1460a9dee4c5e1acc2511b5a705131b4"></a>
iterator&#160;</td><td class="memItemRight" valign="bottom"><b>erase</b> (const_iterator pos)</td></tr>
<tr class="separator:a1460a9dee4c5e1acc2511b5a705131b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36ad7a2a355ba5fa44b3c535da7c85be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36ad7a2a355ba5fa44b3c535da7c85be"></a>
iterator&#160;</td><td class="memItemRight" valign="bottom"><b>erase</b> (const_iterator first, const_iterator last)</td></tr>
<tr class="separator:a36ad7a2a355ba5fa44b3c535da7c85be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff35d80062c9b4ca4e4a71d5a1df020b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff35d80062c9b4ca4e4a71d5a1df020b"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><b>erase_ks</b> (const CharT *key, size_type key_size)</td></tr>
<tr class="separator:aff35d80062c9b4ca4e4a71d5a1df020b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d6036fb1b0b12603fe579da737be59b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d6036fb1b0b12603fe579da737be59b"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><b>erase</b> (const CharT *key)</td></tr>
<tr class="separator:a4d6036fb1b0b12603fe579da737be59b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53877c535e741da934a1c29127a1d0b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53877c535e741da934a1c29127a1d0b8"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><b>erase</b> (const std::basic_string&lt; CharT &gt; &amp;key)</td></tr>
<tr class="separator:a53877c535e741da934a1c29127a1d0b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a348fa393f1a366dbaedd97f65a37b1fe"><td class="memItemLeft" align="right" valign="top">size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a348fa393f1a366dbaedd97f65a37b1fe">erase_prefix_ks</a> (const CharT *prefix, size_type prefix_size)</td></tr>
<tr class="separator:a348fa393f1a366dbaedd97f65a37b1fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7bf3651994c7f0bfd5ae677d4c85684"><td class="memItemLeft" align="right" valign="top">size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#ae7bf3651994c7f0bfd5ae677d4c85684">erase_prefix</a> (const CharT *prefix)</td></tr>
<tr class="separator:ae7bf3651994c7f0bfd5ae677d4c85684"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80a2a53e2e541d08b584af253ff3e9a1"><td class="memItemLeft" align="right" valign="top">size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a80a2a53e2e541d08b584af253ff3e9a1">erase_prefix</a> (const std::basic_string&lt; CharT &gt; &amp;prefix)</td></tr>
<tr class="separator:a80a2a53e2e541d08b584af253ff3e9a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c1869fa26b34609f655ffba37d717cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c1869fa26b34609f655ffba37d717cd"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="classtsl_1_1htrie__set.html">htrie_set</a> &amp;other)</td></tr>
<tr class="separator:a9c1869fa26b34609f655ffba37d717cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42b10f9abc59da57de5cad3449081a78"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42b10f9abc59da57de5cad3449081a78"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><b>count_ks</b> (const CharT *key, size_type key_size) const </td></tr>
<tr class="separator:a42b10f9abc59da57de5cad3449081a78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad169986eec0af891eb038570b516aeee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad169986eec0af891eb038570b516aeee"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><b>count</b> (const CharT *key) const </td></tr>
<tr class="separator:ad169986eec0af891eb038570b516aeee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a428d7fcc617b2ab89b127306197fc58d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a428d7fcc617b2ab89b127306197fc58d"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><b>count</b> (const std::basic_string&lt; CharT &gt; &amp;key) const </td></tr>
<tr class="separator:a428d7fcc617b2ab89b127306197fc58d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19eccf6c2de44e97f8b8555e420bd3a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19eccf6c2de44e97f8b8555e420bd3a5"></a>
iterator&#160;</td><td class="memItemRight" valign="bottom"><b>find_ks</b> (const CharT *key, size_type key_size)</td></tr>
<tr class="separator:a19eccf6c2de44e97f8b8555e420bd3a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae441d4044677690238ce865442253eb1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae441d4044677690238ce865442253eb1"></a>
const_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>find_ks</b> (const CharT *key, size_type key_size) const </td></tr>
<tr class="separator:ae441d4044677690238ce865442253eb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2e4a47f13582456b95ed3fe95dfbcb2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2e4a47f13582456b95ed3fe95dfbcb2"></a>
iterator&#160;</td><td class="memItemRight" valign="bottom"><b>find</b> (const CharT *key)</td></tr>
<tr class="separator:ad2e4a47f13582456b95ed3fe95dfbcb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae442444b031f31e41101dbdae18a94ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae442444b031f31e41101dbdae18a94ef"></a>
const_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>find</b> (const CharT *key) const </td></tr>
<tr class="separator:ae442444b031f31e41101dbdae18a94ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c0c20d3b3fee5499c73d36a7c7d3aba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c0c20d3b3fee5499c73d36a7c7d3aba"></a>
iterator&#160;</td><td class="memItemRight" valign="bottom"><b>find</b> (const std::basic_string&lt; CharT &gt; &amp;key)</td></tr>
<tr class="separator:a8c0c20d3b3fee5499c73d36a7c7d3aba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6b17381f7c7b4ea43161f4b30638961"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6b17381f7c7b4ea43161f4b30638961"></a>
const_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>find</b> (const std::basic_string&lt; CharT &gt; &amp;key) const </td></tr>
<tr class="separator:ac6b17381f7c7b4ea43161f4b30638961"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c6529b4babac200e41d1146686f4ef4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c6529b4babac200e41d1146686f4ef4"></a>
std::pair&lt; iterator, iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>equal_range_ks</b> (const CharT *key, size_type key_size)</td></tr>
<tr class="separator:a1c6529b4babac200e41d1146686f4ef4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2cb827d78ad0e45017ad7071a01d83f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cb827d78ad0e45017ad7071a01d83f4"></a>
std::pair&lt; const_iterator, const_iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>equal_range_ks</b> (const CharT *key, size_type key_size) const </td></tr>
<tr class="separator:a2cb827d78ad0e45017ad7071a01d83f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a681aa27d61c3eb568f127bafd2c609e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a681aa27d61c3eb568f127bafd2c609e7"></a>
std::pair&lt; iterator, iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const CharT *key)</td></tr>
<tr class="separator:a681aa27d61c3eb568f127bafd2c609e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac82a6e85ef328e7d1a39c4d75377d48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac82a6e85ef328e7d1a39c4d75377d48"></a>
std::pair&lt; const_iterator, const_iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const CharT *key) const </td></tr>
<tr class="separator:aac82a6e85ef328e7d1a39c4d75377d48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a757ed62e79ef13ace885c4bd6e43adb9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a757ed62e79ef13ace885c4bd6e43adb9"></a>
std::pair&lt; iterator, iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const std::basic_string&lt; CharT &gt; &amp;key)</td></tr>
<tr class="separator:a757ed62e79ef13ace885c4bd6e43adb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a068f1a717657e1e2db4b21129209d300"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a068f1a717657e1e2db4b21129209d300"></a>
std::pair&lt; const_iterator, const_iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const std::basic_string&lt; CharT &gt; &amp;key) const </td></tr>
<tr class="separator:a068f1a717657e1e2db4b21129209d300"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea77c88b56b8aaeddcd4d463ff09f89e"><td class="memItemLeft" align="right" valign="top">std::pair&lt; prefix_iterator, prefix_iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#aea77c88b56b8aaeddcd4d463ff09f89e">equal_prefix_range_ks</a> (const CharT *prefix, size_type prefix_size)</td></tr>
<tr class="separator:aea77c88b56b8aaeddcd4d463ff09f89e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24d247a3b6b12fb924dc47355969e2c4"><td class="memItemLeft" align="right" valign="top">std::pair&lt; const_prefix_iterator, const_prefix_iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a24d247a3b6b12fb924dc47355969e2c4">equal_prefix_range_ks</a> (const CharT *prefix, size_type prefix_size) const </td></tr>
<tr class="separator:a24d247a3b6b12fb924dc47355969e2c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3862a7c06113e59e19f534c04656a600"><td class="memItemLeft" align="right" valign="top">std::pair&lt; prefix_iterator, prefix_iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a3862a7c06113e59e19f534c04656a600">equal_prefix_range</a> (const CharT *prefix)</td></tr>
<tr class="separator:a3862a7c06113e59e19f534c04656a600"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a02e8f896b008e9b4e75570a5eb3866"><td class="memItemLeft" align="right" valign="top">std::pair&lt; const_prefix_iterator, const_prefix_iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a7a02e8f896b008e9b4e75570a5eb3866">equal_prefix_range</a> (const CharT *prefix) const </td></tr>
<tr class="separator:a7a02e8f896b008e9b4e75570a5eb3866"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae001785d4502a8311512fe3f1f15e392"><td class="memItemLeft" align="right" valign="top">std::pair&lt; prefix_iterator, prefix_iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#ae001785d4502a8311512fe3f1f15e392">equal_prefix_range</a> (const std::basic_string&lt; CharT &gt; &amp;prefix)</td></tr>
<tr class="separator:ae001785d4502a8311512fe3f1f15e392"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a36ffc7b7b8fbc99750de15307ef22c"><td class="memItemLeft" align="right" valign="top">std::pair&lt; const_prefix_iterator, const_prefix_iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a9a36ffc7b7b8fbc99750de15307ef22c">equal_prefix_range</a> (const std::basic_string&lt; CharT &gt; &amp;prefix) const </td></tr>
<tr class="separator:a9a36ffc7b7b8fbc99750de15307ef22c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c31c4b687e738977ff9b27468715b8a"><td class="memItemLeft" align="right" valign="top">iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a5c31c4b687e738977ff9b27468715b8a">longest_prefix_ks</a> (const CharT *key, size_type key_size)</td></tr>
<tr class="separator:a5c31c4b687e738977ff9b27468715b8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30488f6736cbff1854289236f3db60b4"><td class="memItemLeft" align="right" valign="top">const_iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a30488f6736cbff1854289236f3db60b4">longest_prefix_ks</a> (const CharT *key, size_type key_size) const </td></tr>
<tr class="separator:a30488f6736cbff1854289236f3db60b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59b6e426433ab2ea553ed46902c666ca"><td class="memItemLeft" align="right" valign="top">iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a59b6e426433ab2ea553ed46902c666ca">longest_prefix</a> (const CharT *key)</td></tr>
<tr class="separator:a59b6e426433ab2ea553ed46902c666ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b3e3c6a35fb9d14d5a9e60a800d9d3e"><td class="memItemLeft" align="right" valign="top">const_iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a7b3e3c6a35fb9d14d5a9e60a800d9d3e">longest_prefix</a> (const CharT *key) const </td></tr>
<tr class="separator:a7b3e3c6a35fb9d14d5a9e60a800d9d3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67f6687a961a68559203af7a46440f7f"><td class="memItemLeft" align="right" valign="top">iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a67f6687a961a68559203af7a46440f7f">longest_prefix</a> (const std::basic_string&lt; CharT &gt; &amp;key)</td></tr>
<tr class="separator:a67f6687a961a68559203af7a46440f7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75a3ceadb7761f959b5dbd7571160fad"><td class="memItemLeft" align="right" valign="top">const_iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a75a3ceadb7761f959b5dbd7571160fad">longest_prefix</a> (const std::basic_string&lt; CharT &gt; &amp;key) const </td></tr>
<tr class="separator:a75a3ceadb7761f959b5dbd7571160fad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af47805e676d729b06bd940d271eb962b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af47805e676d729b06bd940d271eb962b"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>max_load_factor</b> () const </td></tr>
<tr class="separator:af47805e676d729b06bd940d271eb962b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a590231f312bf45c5004aab104ad03aa1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a590231f312bf45c5004aab104ad03aa1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>max_load_factor</b> (float ml)</td></tr>
<tr class="separator:a590231f312bf45c5004aab104ad03aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea78cee5c1898e5bb70a57b809fdbf22"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea78cee5c1898e5bb70a57b809fdbf22"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><b>burst_threshold</b> () const </td></tr>
<tr class="separator:aea78cee5c1898e5bb70a57b809fdbf22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b675754a5bb432258724fe610e8039d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b675754a5bb432258724fe610e8039d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>burst_threshold</b> (size_type threshold)</td></tr>
<tr class="separator:a5b675754a5bb432258724fe610e8039d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc14765b7424ce3b4234f170c84cc202"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc14765b7424ce3b4234f170c84cc202"></a>
hasher&#160;</td><td class="memItemRight" valign="bottom"><b>hash_function</b> () const </td></tr>
<tr class="separator:acc14765b7424ce3b4234f170c84cc202"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb348338d53cee34b3c7fb30947f3f71"><td class="memTemplParams" colspan="2">template&lt;class Serializer &gt; </td></tr>
<tr class="memitem:acb348338d53cee34b3c7fb30947f3f71"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#acb348338d53cee34b3c7fb30947f3f71">serialize</a> (Serializer &amp;serializer) const </td></tr>
<tr class="separator:acb348338d53cee34b3c7fb30947f3f71"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
<tr class="memitem:a7d7a2e21ca5f43ba69d0757a82eac1a1"><td class="memTemplParams" colspan="2">template&lt;class Deserializer &gt; </td></tr>
<tr class="memitem:a7d7a2e21ca5f43ba69d0757a82eac1a1"><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classtsl_1_1htrie__set.html">htrie_set</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtsl_1_1htrie__set.html#a7d7a2e21ca5f43ba69d0757a82eac1a1">deserialize</a> (Deserializer &amp;deserializer, bool hash_compatible=false)</td></tr>
<tr class="separator:a7d7a2e21ca5f43ba69d0757a82eac1a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
友元</h2></td></tr>
<tr class="memitem:a7ae1b30be774aa0e9b93c9a31a891e54"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ae1b30be774aa0e9b93c9a31a891e54"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="classtsl_1_1htrie__set.html">htrie_set</a> &amp;lhs, const <a class="el" href="classtsl_1_1htrie__set.html">htrie_set</a> &amp;rhs)</td></tr>
<tr class="separator:a7ae1b30be774aa0e9b93c9a31a891e54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4fa3bbc2b049a9f340e5428d94b456e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4fa3bbc2b049a9f340e5428d94b456e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="classtsl_1_1htrie__set.html">htrie_set</a> &amp;lhs, const <a class="el" href="classtsl_1_1htrie__set.html">htrie_set</a> &amp;rhs)</td></tr>
<tr class="separator:ac4fa3bbc2b049a9f340e5428d94b456e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bce6bd10267415f736118e330e402b6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bce6bd10267415f736118e330e402b6"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="classtsl_1_1htrie__set.html">htrie_set</a> &amp;lhs, <a class="el" href="classtsl_1_1htrie__set.html">htrie_set</a> &amp;rhs)</td></tr>
<tr class="separator:a7bce6bd10267415f736118e330e402b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;class CharT, class Hash = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT = std::uint16_t&gt;<br />
class tsl::htrie_set&lt; CharT, Hash, KeySizeT &gt;</h3>

<p>Implementation of a hat-trie set.</p>
<p>The size of a key string is limited to std::numeric_limits&lt;KeySizeT&gt;::max() - 1. That is 65 535 characters by default, but can be raised with the KeySizeT template parameter. See max_key_size() for an easy access to this limit.</p>
<p>Iterators invalidation:</p><ul>
<li>clear, operator=: always invalidate the iterators.</li>
<li>insert: always invalidate the iterators.</li>
<li>erase: always invalidate the iterators. </li>
</ul>
</div><h2 class="groupheader">成员函数说明</h2>
<a class="anchor" id="a7d7a2e21ca5f43ba69d0757a82eac1a1"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<div class="memtemplate">
template&lt;class Deserializer &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="classtsl_1_1htrie__set.html">htrie_set</a> <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::deserialize </td>
          <td>(</td>
          <td class="paramtype">Deserializer &amp;&#160;</td>
          <td class="paramname"><em>deserializer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>hash_compatible</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Deserialize a previouly serialized set through the <code>deserializer</code> parameter.</p>
<p>The <code>deserializer</code> parameter must be a function object that supports the following calls:</p><ul>
<li><code>template&lt;typename U&gt; U operator()();</code> where the types <code>std::uint64_t</code> and <code>float</code> must be supported for U.</li>
<li><code>void operator()(CharT* value_out, std::size_t value_size);</code></li>
</ul>
<p>If the deserialized hash set part of the hat-trie is hash compatible with the serialized set, the deserialization process can be sped up by setting <code>hash_compatible</code> to true. To be hash compatible, the Hash (take care of the 32-bits vs 64 bits), and KeySizeT must behave the same than the ones used in the serialized set. Otherwise the behaviour is undefined with <code>hash_compatible</code> sets to true.</p>
<p>The behaviour is undefined if the type <code>CharT</code> of the <code><a class="el" href="classtsl_1_1htrie__set.html">htrie_set</a></code> is not the same as the type used during serialization.</p>
<p>The implementation leaves binary compatibilty (endianness, IEEE 754 for floats, size of int, ...) of the types it deserializes in the hands of the <code>Deserializer</code> function object if compatibilty is required. </p>

</div>
</div>
<a class="anchor" id="a3862a7c06113e59e19f534c04656a600"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::pair&lt;prefix_iterator, prefix_iterator&gt; <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::equal_prefix_range </td>
          <td>(</td>
          <td class="paramtype">const CharT *&#160;</td>
          <td class="paramname"><em>prefix</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<p>Return a range containing all the elements which have 'prefix' as prefix. The range is defined by a pair of iterator, the first being the begin iterator and the second being the end iterator. </p>

<p><div class="dynheader">
这是这个函数的调用关系图:</div>
<div class="dyncontent">
<div class="center"><img src="classtsl_1_1htrie__set_a3862a7c06113e59e19f534c04656a600_icgraph.png" border="0" usemap="#classtsl_1_1htrie__set_a3862a7c06113e59e19f534c04656a600_icgraph" alt=""/></div>
<map name="classtsl_1_1htrie__set_a3862a7c06113e59e19f534c04656a600_icgraph" id="classtsl_1_1htrie__set_a3862a7c06113e59e19f534c04656a600_icgraph">
<area shape="rect" id="node2" href="classtsl_1_1htrie__set.html#a24d247a3b6b12fb924dc47355969e2c4" title="tsl::htrie_set::equal\l_prefix_range_ks" alt="" coords="197,5,341,47"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a7a02e8f896b008e9b4e75570a5eb3866"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::pair&lt;const_prefix_iterator, const_prefix_iterator&gt; <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::equal_prefix_range </td>
          <td>(</td>
          <td class="paramtype">const CharT *&#160;</td>
          <td class="paramname"><em>prefix</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<p>Return a range containing all the elements which have 'prefix' as prefix. The range is defined by a pair of iterator, the first being the begin iterator and the second being the end iterator. </p>

</div>
</div>
<a class="anchor" id="ae001785d4502a8311512fe3f1f15e392"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::pair&lt;prefix_iterator, prefix_iterator&gt; <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::equal_prefix_range </td>
          <td>(</td>
          <td class="paramtype">const std::basic_string&lt; CharT &gt; &amp;&#160;</td>
          <td class="paramname"><em>prefix</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<p>Return a range containing all the elements which have 'prefix' as prefix. The range is defined by a pair of iterator, the first being the begin iterator and the second being the end iterator. </p>

</div>
</div>
<a class="anchor" id="a9a36ffc7b7b8fbc99750de15307ef22c"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::pair&lt;const_prefix_iterator, const_prefix_iterator&gt; <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::equal_prefix_range </td>
          <td>(</td>
          <td class="paramtype">const std::basic_string&lt; CharT &gt; &amp;&#160;</td>
          <td class="paramname"><em>prefix</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<p>Return a range containing all the elements which have 'prefix' as prefix. The range is defined by a pair of iterator, the first being the begin iterator and the second being the end iterator. </p>

</div>
</div>
<a class="anchor" id="aea77c88b56b8aaeddcd4d463ff09f89e"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::pair&lt;prefix_iterator, prefix_iterator&gt; <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::equal_prefix_range_ks </td>
          <td>(</td>
          <td class="paramtype">const CharT *&#160;</td>
          <td class="paramname"><em>prefix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_type&#160;</td>
          <td class="paramname"><em>prefix_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Return a range containing all the elements which have 'prefix' as prefix. The range is defined by a pair of iterator, the first being the begin iterator and the second being the end iterator. </p>

</div>
</div>
<a class="anchor" id="a24d247a3b6b12fb924dc47355969e2c4"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::pair&lt;const_prefix_iterator, const_prefix_iterator&gt; <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::equal_prefix_range_ks </td>
          <td>(</td>
          <td class="paramtype">const CharT *&#160;</td>
          <td class="paramname"><em>prefix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_type&#160;</td>
          <td class="paramname"><em>prefix_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<p>Return a range containing all the elements which have 'prefix' as prefix. The range is defined by a pair of iterator, the first being the begin iterator and the second being the end iterator. </p>

<p><div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="classtsl_1_1htrie__set_a24d247a3b6b12fb924dc47355969e2c4_cgraph.png" border="0" usemap="#classtsl_1_1htrie__set_a24d247a3b6b12fb924dc47355969e2c4_cgraph" alt=""/></div>
<map name="classtsl_1_1htrie__set_a24d247a3b6b12fb924dc47355969e2c4_cgraph" id="classtsl_1_1htrie__set_a24d247a3b6b12fb924dc47355969e2c4_cgraph">
<area shape="rect" id="node2" href="classtsl_1_1htrie__set.html#a3862a7c06113e59e19f534c04656a600" title="tsl::htrie_set::equal\l_prefix_range" alt="" coords="197,5,341,47"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="ae7bf3651994c7f0bfd5ae677d4c85684"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">size_type <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::erase_prefix </td>
          <td>(</td>
          <td class="paramtype">const CharT *&#160;</td>
          <td class="paramname"><em>prefix</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<p>Erase all the elements which have 'prefix' as prefix. Return the number of erase elements. </p>

<p><div class="dynheader">
这是这个函数的调用关系图:</div>
<div class="dyncontent">
<div class="center"><img src="classtsl_1_1htrie__set_ae7bf3651994c7f0bfd5ae677d4c85684_icgraph.png" border="0" usemap="#classtsl_1_1htrie__set_ae7bf3651994c7f0bfd5ae677d4c85684_icgraph" alt=""/></div>
<map name="classtsl_1_1htrie__set_ae7bf3651994c7f0bfd5ae677d4c85684_icgraph" id="classtsl_1_1htrie__set_ae7bf3651994c7f0bfd5ae677d4c85684_icgraph">
<area shape="rect" id="node2" href="classtsl_1_1htrie__set.html#a348fa393f1a366dbaedd97f65a37b1fe" title="tsl::htrie_set::erase\l_prefix_ks" alt="" coords="199,5,344,47"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a80a2a53e2e541d08b584af253ff3e9a1"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">size_type <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::erase_prefix </td>
          <td>(</td>
          <td class="paramtype">const std::basic_string&lt; CharT &gt; &amp;&#160;</td>
          <td class="paramname"><em>prefix</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<p>Erase all the elements which have 'prefix' as prefix. Return the number of erase elements. </p>

</div>
</div>
<a class="anchor" id="a348fa393f1a366dbaedd97f65a37b1fe"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">size_type <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::erase_prefix_ks </td>
          <td>(</td>
          <td class="paramtype">const CharT *&#160;</td>
          <td class="paramname"><em>prefix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_type&#160;</td>
          <td class="paramname"><em>prefix_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Erase all the elements which have 'prefix' as prefix. Return the number of erase elements. </p>

<p><div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="classtsl_1_1htrie__set_a348fa393f1a366dbaedd97f65a37b1fe_cgraph.png" border="0" usemap="#classtsl_1_1htrie__set_a348fa393f1a366dbaedd97f65a37b1fe_cgraph" alt=""/></div>
<map name="classtsl_1_1htrie__set_a348fa393f1a366dbaedd97f65a37b1fe_cgraph" id="classtsl_1_1htrie__set_a348fa393f1a366dbaedd97f65a37b1fe_cgraph">
<area shape="rect" id="node2" href="classtsl_1_1htrie__set.html#ae7bf3651994c7f0bfd5ae677d4c85684" title="tsl::htrie_set::erase\l_prefix" alt="" coords="199,5,344,47"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a59b6e426433ab2ea553ed46902c666ca"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">iterator <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::longest_prefix </td>
          <td>(</td>
          <td class="paramtype">const CharT *&#160;</td>
          <td class="paramname"><em>key</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<p>Return the element in the trie which is the longest prefix of <code>key</code>. If no element in the trie is a prefix of <code>key</code>, the end iterator is returned.</p>
<p>Example: </p><pre class="fragment">tsl::htrie_set&lt;char&gt; set = {"/foo", "/foo/bar"};

set.longest_prefix("/foo"); // returns "/foo"
set.longest_prefix("/foo/baz"); // returns "/foo"
set.longest_prefix("/foo/bar/baz"); // returns "/foo/bar"
set.longest_prefix("/foo/bar/"); // returns "/foo/bar"
set.longest_prefix("/bar"); // returns end()
set.longest_prefix(""); // returns end()</pre> 
<p><div class="dynheader">
这是这个函数的调用关系图:</div>
<div class="dyncontent">
<div class="center"><img src="classtsl_1_1htrie__set_a59b6e426433ab2ea553ed46902c666ca_icgraph.png" border="0" usemap="#classtsl_1_1htrie__set_a59b6e426433ab2ea553ed46902c666ca_icgraph" alt=""/></div>
<map name="classtsl_1_1htrie__set_a59b6e426433ab2ea553ed46902c666ca_icgraph" id="classtsl_1_1htrie__set_a59b6e426433ab2ea553ed46902c666ca_icgraph">
<area shape="rect" id="node2" href="classtsl_1_1htrie__set.html#a30488f6736cbff1854289236f3db60b4" title="tsl::htrie_set::longest\l_prefix_ks" alt="" coords="209,5,365,47"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a7b3e3c6a35fb9d14d5a9e60a800d9d3e"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const_iterator <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::longest_prefix </td>
          <td>(</td>
          <td class="paramtype">const CharT *&#160;</td>
          <td class="paramname"><em>key</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<p>Return the element in the trie which is the longest prefix of <code>key</code>. If no element in the trie is a prefix of <code>key</code>, the end iterator is returned.</p>
<p>Example: </p><pre class="fragment">tsl::htrie_set&lt;char&gt; set = {"/foo", "/foo/bar"};

set.longest_prefix("/foo"); // returns "/foo"
set.longest_prefix("/foo/baz"); // returns "/foo"
set.longest_prefix("/foo/bar/baz"); // returns "/foo/bar"
set.longest_prefix("/foo/bar/"); // returns "/foo/bar"
set.longest_prefix("/bar"); // returns end()
set.longest_prefix(""); // returns end()</pre> 
</div>
</div>
<a class="anchor" id="a67f6687a961a68559203af7a46440f7f"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">iterator <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::longest_prefix </td>
          <td>(</td>
          <td class="paramtype">const std::basic_string&lt; CharT &gt; &amp;&#160;</td>
          <td class="paramname"><em>key</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<p>Return the element in the trie which is the longest prefix of <code>key</code>. If no element in the trie is a prefix of <code>key</code>, the end iterator is returned.</p>
<p>Example: </p><pre class="fragment">tsl::htrie_set&lt;char&gt; set = {"/foo", "/foo/bar"};

set.longest_prefix("/foo"); // returns "/foo"
set.longest_prefix("/foo/baz"); // returns "/foo"
set.longest_prefix("/foo/bar/baz"); // returns "/foo/bar"
set.longest_prefix("/foo/bar/"); // returns "/foo/bar"
set.longest_prefix("/bar"); // returns end()
set.longest_prefix(""); // returns end()</pre> 
</div>
</div>
<a class="anchor" id="a75a3ceadb7761f959b5dbd7571160fad"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const_iterator <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::longest_prefix </td>
          <td>(</td>
          <td class="paramtype">const std::basic_string&lt; CharT &gt; &amp;&#160;</td>
          <td class="paramname"><em>key</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<p>Return the element in the trie which is the longest prefix of <code>key</code>. If no element in the trie is a prefix of <code>key</code>, the end iterator is returned.</p>
<p>Example: </p><pre class="fragment">tsl::htrie_set&lt;char&gt; set = {"/foo", "/foo/bar"};

set.longest_prefix("/foo"); // returns "/foo"
set.longest_prefix("/foo/baz"); // returns "/foo"
set.longest_prefix("/foo/bar/baz"); // returns "/foo/bar"
set.longest_prefix("/foo/bar/"); // returns "/foo/bar"
set.longest_prefix("/bar"); // returns end()
set.longest_prefix(""); // returns end()</pre> 
</div>
</div>
<a class="anchor" id="a5c31c4b687e738977ff9b27468715b8a"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">iterator <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::longest_prefix_ks </td>
          <td>(</td>
          <td class="paramtype">const CharT *&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_type&#160;</td>
          <td class="paramname"><em>key_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Return the element in the trie which is the longest prefix of <code>key</code>. If no element in the trie is a prefix of <code>key</code>, the end iterator is returned.</p>
<p>Example: </p><pre class="fragment">tsl::htrie_set&lt;char&gt; set = {"/foo", "/foo/bar"};

set.longest_prefix("/foo"); // returns "/foo"
set.longest_prefix("/foo/baz"); // returns "/foo"
set.longest_prefix("/foo/bar/baz"); // returns "/foo/bar"
set.longest_prefix("/foo/bar/"); // returns "/foo/bar"
set.longest_prefix("/bar"); // returns end()
set.longest_prefix(""); // returns end()</pre> 
</div>
</div>
<a class="anchor" id="a30488f6736cbff1854289236f3db60b4"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const_iterator <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::longest_prefix_ks </td>
          <td>(</td>
          <td class="paramtype">const CharT *&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_type&#160;</td>
          <td class="paramname"><em>key_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<p>Return the element in the trie which is the longest prefix of <code>key</code>. If no element in the trie is a prefix of <code>key</code>, the end iterator is returned.</p>
<p>Example: </p><pre class="fragment">tsl::htrie_set&lt;char&gt; set = {"/foo", "/foo/bar"};

set.longest_prefix("/foo"); // returns "/foo"
set.longest_prefix("/foo/baz"); // returns "/foo"
set.longest_prefix("/foo/bar/baz"); // returns "/foo/bar"
set.longest_prefix("/foo/bar/"); // returns "/foo/bar"
set.longest_prefix("/bar"); // returns end()
set.longest_prefix(""); // returns end()</pre> 
<p><div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="classtsl_1_1htrie__set_a30488f6736cbff1854289236f3db60b4_cgraph.png" border="0" usemap="#classtsl_1_1htrie__set_a30488f6736cbff1854289236f3db60b4_cgraph" alt=""/></div>
<map name="classtsl_1_1htrie__set_a30488f6736cbff1854289236f3db60b4_cgraph" id="classtsl_1_1htrie__set_a30488f6736cbff1854289236f3db60b4_cgraph">
<area shape="rect" id="node2" href="classtsl_1_1htrie__set.html#a59b6e426433ab2ea553ed46902c666ca" title="tsl::htrie_set::longest\l_prefix" alt="" coords="209,5,365,47"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="acb348338d53cee34b3c7fb30947f3f71"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<div class="memtemplate">
template&lt;class Serializer &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::serialize </td>
          <td>(</td>
          <td class="paramtype">Serializer &amp;&#160;</td>
          <td class="paramname"><em>serializer</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Serialize the set through the <code>serializer</code> parameter.</p>
<p>The <code>serializer</code> parameter must be a function object that supports the following calls:</p><ul>
<li><code>void operator()(const U&amp; value);</code> where the types <code>std::uint64_t</code> and <code>float</code> must be supported for U.</li>
<li><code>void operator()(const CharT* value, std::size_t value_size);</code></li>
</ul>
<p>The implementation leaves binary compatibilty (endianness, IEEE 754 for floats, ...) of the types it serializes in the hands of the <code>Serializer</code> function object if compatibilty is required. </p>

</div>
</div>
<a class="anchor" id="a63841836ead586f56bf5a867be2f32b1"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class CharT , class Hash  = tsl::ah::str_hash&lt;CharT&gt;, class KeySizeT  = std::uint16_t&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classtsl_1_1htrie__set.html">tsl::htrie_set</a>&lt; CharT, Hash, KeySizeT &gt;::shrink_to_fit </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Call <a class="el" href="classtsl_1_1htrie__set.html#a63841836ead586f56bf5a867be2f32b1">shrink_to_fit()</a> on each hash node of the hat-trie to reduce its size. </p>

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>src/hat-trie/include/tsl/<a class="el" href="htrie__set_8h_source.html">htrie_set.h</a></li>
</ul>
</div><!-- contents -->
<address class="footer">
    <small>
        &nbsp; Copyright (c) (2019-2020) &nbsp;<a href="https://www.chatopera.com">
            北京华夏春松科技有限公司
        </a>. All Rights Reserved
        &nbsp;
    </small>
</address>